import request from '@/utils/request'

// 从服务器返回的302看，实际接口可能是message/，而非/message
const MESSAGE_URL = '/message'

/**
 * 发送消息
 * @param {Object} data - 消息数据
 * @param {number} data.receiverUserId - 接收者用户ID
 * @param {string} data.content - 消息内容
 * @param {number} data.msgType - 消息类型 (0-文本, 1-图片, 2-文件)
 * @returns {Promise}
 */
export function sendMessageRequest(data) {
  const messageData = {
    ...data,
    // 确保数据格式完全符合后端要求
    receiverUserId: Number(data.receiverUserId),
    msgType: Number(data.msgType || 0)
  };

  console.log('准备发送消息数据:', messageData);
  
  return request({
    url: MESSAGE_URL + '/sendMsg',
    method: 'post',
    data: messageData
  })
}

/**
 * 获取消息列表
 * @param {number} friendUserId - 好友用户ID
 * @param {number} page - 页码
 * @param {number} size - 每页数量
 * @returns {Promise}
 */
export function getMessageList(friendUserId, page = 1, size = 20) {
  return request({
    url: `${MESSAGE_URL}/chat/${friendUserId}`,
    method: 'get',
    params: { page, size }
  })
}

/**
 * 将消息标记为已读
 * @param {number} friendUserId - 好友用户ID
 * @returns {Promise}
 */
export function markMessagesAsRead(friendUserId) {
  return request({
    url: `${MESSAGE_URL}/read/${friendUserId}`,
    method: 'put'
  })
}

/**
 * 消息类型枚举
 */
export const MessageType = {
  TEXT: 0,    // 文本消息
  IMAGE: 1,   // 图片消息
  FILE: 2,    // 文件类型
  VIDEO: 3,   // 视频消息
  AUDIO: 4    // 语音消息
}

/**
 * 获取未读消息数量
 * @returns {Promise} 返回包括 unreadBySender 和 totalUnread 的对象
 * 格式: { unreadBySender: { "senderId": "数量" }, totalUnread: "总数" }
 */
export function getUnreadMessageCount() {
  return request({
    url: `${MESSAGE_URL}/unread/count`,
    method: 'get'
  })
}

/**
 * 删除与指定好友的聊天记录
 * @param {Number} friendUserId 好友用户ID
 * @returns {Promise}
 */
export function deleteChatHistory(friendUserId) {
  return request({
    url: `${MESSAGE_URL}/delete?friendId=${friendUserId}`,
    method: 'delete'
  })
}